//
// Created by Administrator on 2023/4/3.
/*
 2023春季伴学挑战赛03：C++语言
 http://www.aisichuang.net/#/main/Competition/TitlePage?id=1552&raceId=1289
 考点:
 成绩周期
题目描述

小A同学这一学期的成绩不太稳定，起伏波动较大。现在，李老师拿到了小A同学 n 次练习的成绩，尝试着分析一下小A同学的成绩周期。

一个成绩周期的定义如下：成绩一开始单调上升（或者不变），然后单调下降（或者不变）。例如 2,3,3,4,5,5,4,4,3,2，这一段成绩就是一个成绩周期。特别地，若有一段只有单调上升或者只单调下降的序列，也算是一个成绩周期。

现在，请你帮李老师找出小A同学的最大成绩周期（即成绩周期中的最大元素个数）。
输入格式

第一行一个整数 n(1≤n≤10000)，表示有 n 个成绩。

第二行有 n 个用空格隔开的整数 si​(1≤si​≤100)，表示小A同学的每次成绩。
输出格式

一行一个整数，为小A同学最大的成绩周期。
样例输入 #1
15
2 3 3 4 5 5 4 4 4 3 2 3 3 3 5
样例输出 #1
11
 */
// 这种方法只能部分通过测试案例
//

#include <iostream>

using namespace std;

int main()
{
    int n, ans = 0, count = 0, index = 0;
    int up = 0;
    cin >> n;
    int arr[n];
    int len_arr[n];
    for (int i = 0; i < n; ++i)
    {
        len_arr[i] = 1;
    }
    cin >> arr[0];
    cin >> arr[1];
    len_arr[0]++;
    if (arr[1] > arr[0])
    {
        up = 1;
        count++;
    } else if (arr[1] < arr[0])
    {
        up = -1;
        count++;
    }
    for (int i = 2; i < n; ++i)
    {
        cin >> arr[i];
        if (arr[i] > arr[i - 1] && up < 0)
        {
            // 上升了, 但是之前是在下降, 计数器++
            up = 1;
            count++;
        } else if (arr[i] < arr[i - 1] && up > 0)
        {
            // 下降了, 但是之前在上升, 计数器++
            up = -1;
            count++;
        } else
        {
            if (arr[i] > arr[i - 1])
                up = 1;
            else if (arr[i] < arr[i - 1])
                up = -1;
//            else
//                up = 0;
        }
        if (count > 2)
        {
            count = 1;
            index++;
        }
//        else if(count==2 && arr[i]==arr[i-1])
//        {
//            // 当count=2时, 而且处于上升或者下降时, 改为持平也算状态的改变
//            count = 1;
//            index++;
//        }
        else
            len_arr[index]++;
    }

    for (int j = 0; j < n; ++j)
    {
        if (len_arr[j] != 1)
        {
            printf("len_arr[%d]=%d\n", j, len_arr[j]);
            // 找出最大值
            ans = len_arr[j] > ans ? len_arr[j] : ans;
        }
    }
    cout << ans;
    return 0;
}
